Overview:
Redis supports several mathematical operations that are defined on sets, which include
- Membership of an element in a set
- Union of sets
- Intersection sets
- Subtraction of sets
Set Membership:
- Any Set consists of one or more elements. A set without any member is called a null set.
- The Redis command, SISMEMBER checks whether an element is a member of a set.
Example:
# Example Python program to demonstrate set membership operation in Redis import redis
redisClient = redis.StrictRedis(host='localhost', port=6379, db=0)
# Define a set of prime numbers redisClient.sadd("primes", 2, 3, 5, 7)
# Check if 6 is a prime number print("Is 6 a prime number? {}".format(redisClient.sismember("primes", 8)))
# Check if 7 is a prime number print("Is 7 a prime number? {}".format(redisClient.sismember("primes", 7)))
|
Output:
Is 6 a prime number? False Is 7 a prime number? True |
Set Union:
- Union of 'n' sets is a set, which has elements that are part of either the individual sets or part of many of them.
- The Redis command SUNION provides the Union of multiple sets.
- The command SUNIONSTORE provided by Redis is similar to SUNION. However, SUNIONSTORE stores the resultant union of multiple sets in a destination set provided.
Example:
# Example Python program to demonstrate set union in Redis import redis
redisClient = redis.StrictRedis(host='localhost', port=6379, db=0)
# Define multiple sets of fruits redisClient.sadd("Fruits1", "Pear", "Peach", "Guava", "Melon") redisClient.sadd("Fruits2", "Apple", "Melon", "Berry", "Mango") redisClient.sadd("Fruits3", "Grapes", "Banana", "Melon", "Berry")
# Find the union of the redis sets print(redisClient.sunion("Fruits1","Fruits2","Fruits3"))
# Define multiple sets of games redisClient.sadd("Games1", "Cricket", "Hockey", "Base Ball") redisClient.sadd("Games2", "Foot Ball", "Badminton", "Hockey") redisClient.sadd("Games3", "Tennis", "Hockey", "Polo")
# Find the union of the redis sets and store it in the destination set provided redisClient.sunionstore("Games4", "Games1","Games2","Games3") # Print the members of the new set print(redisClient.smembers("Games4")) |
Output:
{b'Guava', b'Grapes', b'Pear', b'Peach', b'Apple', b'Melon', b'Berry', b'Banana', b'Mango'} {b'Polo', b'Badminton', b'Base Ball', b'Hockey', b'Foot Ball', b'Tennis', b'Cricket'} |
Set Intersection:
- Intersection of multiple sets is provided by a set whose elements are present in all of those sets for which the Intersection is taken.
- Redis has two commands to perform set intersection. One is SINTER and the other one is SINTERSTORE.
- SINTER computes intersection of multiple sets and returns the resultant set.
- SINTERSTORE is similar to SINTER. Instead of returning the intersection of multiple sets, SINTERSTORE stores it in the destination set provided.
Example:
# Example Python program to demonstrate set intersection in Redis import redis
redisClient = redis.StrictRedis(host='localhost', port=6379, db=0)
# Define multiple sets of fruits in Redis redisClient.sadd("FruitBasket1", "Pear", "Peach", "Guava", "Melon") redisClient.sadd("FruitBasket2", "Apple", "Melon", "Berry", "Mango") redisClient.sadd("FruitBasket3", "Grapes", "Banana", "Melon", "Berry")
# Find the intersection of multiple sets of fruits newBasket = redisClient.sinter("FruitBasket1", "FruitBasket2", "FruitBasket3") print("Intersection of fruit baskets:") print(newBasket)
# Define multiple sets of games in Redis redisClient.sadd("GameSet1", "Cricket", "Hockey", "Base Ball") redisClient.sadd("GameSet2", "Foot Ball", "Badminton", "Hockey") redisClient.sadd("GameSet3", "Tennis", "Hockey", "Polo")
# Find the intersection of multiple sets of games redisClient.sinterstore("GameSetCommon","GameSet1", "GameSet2", "GameSet3") print("Intersection of game sets:") print(redisClient.smembers("GameSetCommon")) |
Output:
Intersection of fruit baskets: {b'Melon'} Intersection of game sets: {b'Hockey'} |
Subtraction of sets:
- Removing elements of A, which are also present in the other sets, provides the subtraction of multiple sets from a set A.
- Redis provides SDIFF that computes and returns the difference set between the set A and all other sets.
- The SDIFFSTORE command computes the difference set between the set A and all other sets. The difference set is stored in a destination set provided.
Example:
# Example Python program to demonstrate set difference operation in Redis import redis
# Create a Redis client redisClient = redis.StrictRedis(host='localhost', port=6379, db=0)
# Define multiple sets of numbers redisClient.sadd("NumberSet1", 1, 2, 3, 4) redisClient.sadd("NumberSet2", 2) redisClient.sadd("NumberSet3", 3)
# Find the set difference between set 1 and all other sets print(redisClient.sdiff("NumberSet1", "NumberSet2", "NumberSet3"))
# Define multiple sets of credit ratings redisClient.sadd("CreditRatings1", "AAA", "AA", "BB") redisClient.sadd("CreditRatings2", "BB") redisClient.sadd("CreditRatings3", "AA")
# Find the set difference between CreditRatings set 1 and all other sets # Store the results in CreditRatings4 redisClient.sdiffstore("CreditRatings4", "CreditRatings1", "CreditRatings2", "CreditRatings3") print(redisClient.smembers("CreditRatings4")) |
Output:
{b'4', b'1'} {b'AAA'} |